/*
 * Copyright (c) 2024. hallele, Inc All rights reserved.
 */

package cn.hallele.infrastructure.metadata.exception.children;

import cn.hallele.infrastructure.metadata.exception.HalException;

/**
 * 敏感异常，需要做脱敏处理的异常
 * java.io.FileNotFoundException 泄露文件系统结构和文件名列举
 * java.util.jar.JarException 泄露文件系统结构
 * java.util.MissingResourceException 资源列举
 * java.security.acl.NotOwnerException 所有人列举
 * java.util.ConcurrentModificationException 可能提供线程不安全的代码信息
 * javax.naming.InsufficientResourcesException 服务器资源不足，可能会造成dos攻击
 * java.net.BindException 当不信任客户端能够选择服务器端口时造成开放端口列举
 * java.lang.OutOfMemoryError dos攻击
 * java.lang.StackOverflowError dos攻击
 * java.sql.SQLException 数据库结构，用户名列举
 *
 * @author anle5
 * @since 2024/9/8 21:45
 */
public class SensitiveException extends HalException {
    /**
     * 无参构造函数
     */
    public SensitiveException() {
    }

    /**
     * 带message的构造函数
     *
     * @param message message
     */
    public SensitiveException(String message) {
        super(message);
    }

    /**
     * 带message和args的构造函数
     *
     * @param message message
     * @param args    args
     */
    public SensitiveException(String message, Object... args) {
        super(message, args);
    }

    /**
     * 带message、cause和args的构造函数
     *
     * @param message message
     * @param cause   cause
     * @param args    args
     */
    public SensitiveException(String message, Throwable cause, Object... args) {
        super(message, cause, args);
    }

    /**
     * 带cause的构造函数
     *
     * @param cause cause
     */
    public SensitiveException(Throwable cause) {
        super(cause);
    }

    /**
     * 全参构造函数
     *
     * @param message            message
     * @param cause              cause
     * @param enableSuppression  enableSuppression
     * @param writableStackTrace writableStackTrace
     * @param args               args
     */
    public SensitiveException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace, Object... args) {
        super(message, cause, enableSuppression, writableStackTrace, args);
    }
}
